
package com.zsrt.day20170505.ch05;

/**
 * 二叉树 binary 
 * @author jmj
 * @date 2017年5月5日
 * @time 下午6:01:14
 */
public class BTree {

	private Node root;
	
	public BTree(Node root){
		this.root = root;
	}
	
	/**
	 * 添加节点
	 * @param root   每次方法执行行的根节点
	 * @param addNode
	 */
	public void add(Node root,Node addNode){
		//拿到当前的二叉树的根节点
		Node pNode = root;
		//二叉树的左边情况
		if(addNode.getData() <pNode.getData()  ){
			//当前节点的根节点没有左子树
			if(pNode.getLeftNode() == null){
				pNode.setLeftNode(addNode);
			}else{
				//有左子树
				this.add(pNode.getLeftNode(), addNode);
			}
		}else{
			//右边的情况
			if(pNode.getRightNode() == null){
				pNode.setRightNode(addNode);
			}else{
				this.add(pNode.getRightNode(), addNode);
			}
		}
	}
	
	/**
	 * 二叉树的先序遍历
	 * @return
	 */
	public void preOrder(Node root){
		Node p = root;
		//先序是先跟 然后左子树 然后右子树
		if(p != null){
			System.out.print(p.getData()+"---->");
			this.preOrder(p.getLeftNode());
			this.preOrder(p.getRightNode());
		}
	}	
	/**
	 * 中序
	 * @param root
	 */
	public void inOrder(Node root){
		//Node p = root;
		//中序  左子树   跟 然后右子树
		if(null != root){
			this.inOrder(root.getLeftNode());
			
			System.out.print(root.getData()+"---->");
			this.inOrder(root.getRightNode());
		}
	}
}
